UAVDT目标检测数据集格式转化以及训练集验证集划分教程(原格式转化为Json(COCO)格式)

您所在的位置:网站首页 无人机 目标检测 UAVDT目标检测数据集格式转化以及训练集验证集划分教程(原格式转化为Json(COCO)格式)

UAVDT目标检测数据集格式转化以及训练集验证集划分教程(原格式转化为Json(COCO)格式)

2024-02-22 10:16| 来源: 网络整理| 查看: 265

UAVDT目标检测数据集格式转化教程(原格式转化为Json(COCO)格式)

无人机目标检测数据集目前主要有两个,一个是VisDrone19/18,还有一个就是UAVDT。 UAVDT数据集不是COCO格式的,但是目标检测一般使用COCO或者VOC格式的。 我找了一圈,博客和Github上都没有相关的转化数据集代码。(以前转数据集网上一搜都有别人提供的,但是这个数据集可能用的人少吧,我没找到)。所以只能自己来写了。以后其他人用这个数据集需要转化格式的时候就可以参考了。

1、下载数据集,了解数据集格式。 官网是这个:UAVDT官网 里面的图片类似这样。 在这里插入图片描述 UAVDT还包括了目标跟踪。其实它主要是目标跟踪。里面的目标检测也只是把视频里的东西逐帧提取,然后打上相应的标签。

下载下来后我们主要用这两个文件。 在这里插入图片描述 第一个就是图片,里面有子文件夹,子文件夹中就是那一段视频的每一帧的图片。 第二个文件夹就是GT标签,其中有README文件,里面有详细的格式说明。 README文件 标签是这样的 在这里插入图片描述 也就是类似yolo的txt格式。每一列它都有说明了。

2、先处理图片,把图片重命名放入到一个文件夹中。 COCO格式中图片都是放入到单独一个文件夹中的。 这个数据集一个文件夹下又有好多文件夹,这样不太好,我们可以把图片重命名后放入一个文件夹。

这里可以写一个简单的Python脚本。就叫imagescopy2onedir.py吧

import os import shutil multidirpath = 'D:/07_codeD/datasets/UAV/UAV-benchmark-M' outdir = 'D:/07_codeD/datasets/UAV/uavdtallimages_rename' # os.mkdir((outdir)) filenames = os.listdir(multidirpath) # print(filenames) for file in filenames: wholefile = multidirpath + '/' + file filenextname = os.listdir(wholefile) # print(filenextname) for filenext in filenextname: pathall = multidirpath + '/' + file + '/' + filenext # print(pathall) str1 = str(file) outpath = outdir + '/' + str1 + '_' + filenext[-10:] # print(outpath) shutil.copyfile(pathall,outpath)

改变路径就可以在你自己的电脑上运行了。 这是我们重新命名的图片。 在这里插入图片描述 3、接下来就是写一个txt2json的python脚本了。

import json import pandas as pd import os classList = ["car", "truck", "bus"] # By default, coco dataset starts index of categories from 1 PRE_DEFINE_CATEGORIES = { key: idx + 1 for idx, key in enumerate(classList)} # print(PRE_DEFINE_CATEGORIES) txtdir = 'D:/07_codeD/datasets/UAV/UAV-benchmark-MOTD_v1.0/GT' out_json_file = "out.json" json_dict = { "images": [], "type": "instances", "annotations": [], "categories": []} # json格式如下,我们要写这总的4个部分,先把最简单的categories写了吧 # {"images": [], "type": "instances", "annotations": [], "categories": []} # 先把categories部分写完 for cate, cid in PRE_DEFINE_CATEGORIES.items(): cat = { 'supercategory': cate, 'id': cid, 'name': cate} json_dict['categories'].append(cat) def get_annot_data(txt_file): '''Read annotation into a Pandas dataframe''' annot_data = pd.read_csv(txt_file, delimiter=',', names=['','','','','','','','','']) return annot_data # 记录键值对为后面id进行使用 dict_imagename2id = { } # 先实现images部分 # begin imageid


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3